package com.flyan.game.motafx.entity;

import cn.hutool.json.JSONObject;
import lombok.Data;

/**
 * 基础实体信息
 *
 * @author flyan
 * @version 1.0
 * @email flyan_by_chenu@sina.com
 * @since 2025/2/9
 */
@Data
public class BaseEntityInfo {

    /**
     * 实体编号
     */
    private int entityCode;

    /**
     * 实体名称
     */
    private String name;

    /**
     * 属性
     */
    private JSONObject properties;

    public void putObject(String propertyName, Object object) {
        if (properties == null) {
            properties = new JSONObject();
        }
        properties.putByPath(propertyName, object);
    }

    /**
     * 获取属性对象
     *
     * @param propertyName 属性名称，多层级可指定路径
     * @param clazz 属性对象类型
     * @return 属性对象
     * @param <T> 属性对象类型
     */
    public <T> T getObject(String propertyName, Class<T> clazz) {
        if (properties != null) {
            return properties.getByPath(propertyName, clazz);
        }
        return null;
    }

}
